home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / oscar / ssi / SSIviewer.pyo (.txt) < prev   
Python Compiled Bytecode  |  2008-10-13  |  4KB  |  160 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. import wx
  5. import string
  6. import time
  7. import struct
  8. import oscar.ssi as oscar
  9. import gui
  10.  
  11. class SSIViewer(wx.Frame):
  12.     
  13.     def __init__(self, o, parent, id = -1):
  14.         print 'new ssiViewer'
  15.         self.o = o
  16.         wx.Frame.__init__(self, parent, id, 'SSIs')
  17.         gui.toolbox.persist_window_pos(self, close_method = self.on_close)
  18.         self.content = wx.BoxSizer(wx.VERTICAL)
  19.         tree_id = wx.NewId()
  20.         self.tree = wx.TreeCtrl(self, tree_id)
  21.         self.content.Add(self.tree, 1, wx.GROW)
  22.         rootId = self.tree.AddRoot('Root')
  23.         rootgroup = self.o.ssimanager.ssis[(0, 0)]
  24.         groups = []
  25.         if rootgroup.tlvs and 200 in rootgroup.tlvs:
  26.             for group_id in rootgroup.tlvs[200]:
  27.                 groups.append(self.o.ssimanager.ssis[(group_id, 0)])
  28.             
  29.         
  30.         rootMemberId = self.tree.AppendItem(rootId, rootgroup.name)
  31.         if rootgroup.tlvs:
  32.             for key in rootgroup.tlvs.keys():
  33.                 self.tree.AppendItem(rootMemberId, printTLV(key, rootgroup.tlvs[key]))
  34.             
  35.         
  36.         self.addrootgroup(rootMemberId)
  37.         for group in groups:
  38.             groupitem_id = self.tree.AppendItem(rootId, 'Name: "' + group.name + '" Group: 0x%04X' % group.group_id)
  39.             self.addgroup(group, groupitem_id)
  40.         
  41.         self.SetSizer(self.content)
  42.  
  43.     
  44.     def addgroup(self, group, treeId):
  45.         ssilist = []
  46.         if group.tlvs and 200 in group.tlvs:
  47.             for short in group.tlvs[200]:
  48.                 ssilist.append(self.o.ssimanager.ssis[(group.group_id, short)])
  49.             
  50.         
  51.         for member in ssilist:
  52.             memberId = self.tree.AppendItem(treeId, 'Name: "' + member.name + '" ' + ' Item #: 0x%04X' % member.item_id)
  53.             if member.tlvs:
  54.                 for key in member.tlvs.keys():
  55.                     self.tree.AppendItem(memberId, printTLV(key, member.tlvs[key]))
  56.                 
  57.         
  58.  
  59.     
  60.     def addrootgroup(self, treeId):
  61.         ssilist = self.o.ssimanager.get_ssis_in_group(0)
  62.         for member in ssilist:
  63.             member = member.clone()
  64.             if member.type in oscar.ssi.buddy_types:
  65.                 type = oscar.ssi.buddy_types[member.type]
  66.             else:
  67.                 type = 'Unknown flag type 0x%04X' % member.type
  68.             memberId = self.tree.AppendItem(treeId, 'Name: "' + member.name + '" ' + ' Item #: 0x%04X' % member.item_id + ' Type: ' + type)
  69.             if member.tlvs:
  70.                 for key in member.tlvs.keys():
  71.                     
  72.                     try:
  73.                         self.tree.AppendItem(memberId, printTLV(key, member.tlvs[key]))
  74.                     continue
  75.                     except Exception:
  76.                         print 'couldnt add tlv to tree: %r' % ((key, member.tlvs[key]),)
  77.                         continue
  78.                     
  79.  
  80.                 
  81.             None<EXCEPTION MATCH>Exception
  82.         
  83.  
  84.     
  85.     def on_close(self, e):
  86.         self.Destroy()
  87.  
  88.  
  89.  
  90. def printTLV(tlvtype, tlvdata):
  91.     import util as util
  92.     tlvstring = '0x%04X' % tlvtype + ': '
  93.     if tlvtype == 109:
  94.         (dateint,) = struct.unpack('!I', tlvdata[:4])
  95.         tlvstring = tlvstring + '"' + time.asctime(time.localtime(dateint)) + '" + '
  96.         tlvdata = tlvdata[4:]
  97.     
  98.     if tlvtype == 103:
  99.         (dateint,) = struct.unpack('!I', tlvdata)
  100.         tlvstring = tlvstring + '"' + time.asctime(time.localtime(dateint)) + '"'
  101.         tlvdata = None
  102.     
  103.     if tlvtype == 110:
  104.         pass
  105.     
  106.     if tlvtype == 200:
  107.         for short in tlvdata:
  108.             tlvstring += '%04X' % short + ' '
  109.         
  110.         tlvstring = tlvstring[:-1]
  111.         tlvdata = None
  112.     
  113.     if tlvtype == 305:
  114.         tlvstring += 'Alias: "' + return_printable(tlvdata)
  115.         tlvdata = None
  116.     
  117.     if tlvtype == 311:
  118.         tlvstring += 'mail: "' + return_printable(tlvdata)
  119.         tlvdata = None
  120.     
  121.     if tlvtype == 311:
  122.         tlvstring += 'SMS: "' + return_printable(tlvdata)
  123.         tlvdata = None
  124.     
  125.     if tlvtype == 316:
  126.         tlvstring += 'Comment: "' + return_printable(tlvdata)
  127.         tlvdata = None
  128.     
  129.     if tlvtype == 213:
  130.         pass
  131.     
  132.     if tlvdata:
  133.         
  134.         try:
  135.             tlvstring += '"' + util.to_hex(tlvdata) + '"'
  136.         except Exception:
  137.             print tlvtype, tlvdata
  138.             raise 
  139.         except:
  140.             None<EXCEPTION MATCH>Exception
  141.         
  142.  
  143.     None<EXCEPTION MATCH>Exception
  144.     return tlvstring
  145.  
  146.  
  147. def return_printable(string_):
  148.     retval = ''
  149.     if not string_:
  150.         return ''
  151.     
  152.     for char in string_:
  153.         if char in string.printable:
  154.             retval += char
  155.             continue
  156.         retval += '.'
  157.     
  158.     return retval + '"'
  159.  
  160.